public class Kasse { private double wert; private Warenlager lager; private Verkauf verkauf; public Kasse(Warenlager l) { lager = l; wert = 0.0; verkauf = new Verkauf(); } public Kasse(Warenlager l, double w ) { lager = l; wert = w; verkauf = new Verkauf(); } public Warenlager getLager() { // Nicht ideal: zurückgegebenes Objekt // kann immernoch manipuliert werden. return lager; } public String toString() { return String.format("%6.2f Euro", wert); } public void verkauf(Ware w, int anzahl) { verkauf.transfer( lager, w, anzahl ); } public void beendeVerkauf() { wert += verkauf.wert(); verkauf = new Verkauf(); } public Verkauf getVerkauf() { // Nicht ideal: von außen manipulierbar return verkauf; } public static boolean test() { assert( Warenlager.test() ); assert( Verkauf.test() ); System.err.print("Kasse: "); Warenlager lager = new Warenlager(); Kasse kasseeins = new Kasse( lager ); Kasse kassezwei = new Kasse( new Warenlager(), 325.76 ); assert( kasseeins.getLager() == lager ); assert( kassezwei.getLager() != lager ); assert( kassezwei.getLager() != kasseeins.getLager() ); assert( kasseeins.toString().equals(" 0,00 Euro") ); assert( kassezwei.toString().equals("325,76 Euro") ); kasseeins.verkauf( new Ware("Ayran", 1.99), 10 ); assert( lager.anzahl( new Ware("Ayran", 1.99) ) == 89 ); //System.err.println( kasseeins.getVerkauf().toString() ); assert(kasseeins.getVerkauf().wert() == 19.89); kasseeins.beendeVerkauf(); assert(kasseeins.toString().equals(" 19.89 Euro")); assert(kasseeins.getVerkauf().wert() == 0.0); System.err.println("passed"); return true; } public static void main(String[] args) { test(); } }